package ${classPackageNameMap[table.className+'Service']};

import java.util.List;
import com.jd.xtl.common.spi.response.PageResult;
import ${classTypeNameMap[table.className]};
import ${classTypeNameMap[table.className+'Example']};
import ${classTypeNameMap[table.className+'VO']};

/**
 * @author ${author!}
 * @since ${timeNow!}
 * ${table.remarks!}
 */
public interface ${table.className}Service {
    /**
     * 根据条件查询数量
     * @param request 查询条件
     * @return Long count
     */
    Long countByExample(${table.className}Example request);
    /**
     * 根据id查询
     * @param id id
     * @return ${table.className}
     */
    ${table.className} selectByPrimaryKey(Long id);
    /**
     * 根据条件查询列表
     * @param request 查询条件
     * @return List<${table.className}>
     */
    List<${table.className}> selectByExample(${table.className}Example request);
    /**
     * 根据条件查询列表
     * @param request 查询条件
     * @return List<${table.className+'VO'}>
     */
    List<${table.className+'VO'}> selectList(${table.className+'VO'} request);
    /**
     * 根据条件查询分页
     * @param request 查询条件
     * @return PageResult<${table.className}>
     */
    PageResult<${table.className+'VO'}> selectPage(${table.className+'VO'} request);
    /**
     * 新增
     * @param request request
     * @return 影响记录数
     */
    Integer insert(${table.className} request);
    /**
     * 批量新增
     * @param requests requests
     * @return 影响记录数
     */
    Integer insertBatch(List<${table.className+'VO'}> requests);
    /**
     * 更新
     * @param request request
     * @return 影响记录数
     */
    Integer update(${table.className} request);
    /**
     * 根据id删除
     * @param request request
     * @return 影响记录数
     */
    Integer deleteStateById(${table.className+'VO'} request);
    /**
     * 根据条件删除
     * @param request request
     * @return 影响记录数
     */
    Integer delete(${table.className}Example request);
    /**
     * 新增或修改
     * @param request request
     * @return 影响记录数
     */
    Integer save(${table.className} request);
}